package com.junsi.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import com.junsi.bean.Staff;

/**
 * 员工映射层
 * @author wkp
 *
 */
@Component
public interface StaffMapper {
	
	/**
	 * 根据ID查找
	 * @param id
	 * @return
	 */
	public Staff findById(Integer id);
	
	/**
	 * 查询所有员工信息
	 * @return
	 */
	public List<Staff> findByAll();
	
	/**
	 * 新增
	 * @param staff
	 * @return
	 */

	public int save(Staff staff);
	
	/**
	 * 修改员工信息
	 * @param staff
	 * @return
	 */
	public int update(Staff staff);
	
	/**
	 * 根据ID删除员工信息
	 * @param id
	 * @return
	 */
	public int delete(Integer id);
	
	/**
	 * 根据部门编号查询该部门的所有员工
	 * @param id
	 * @param endIndex
	 * @param startIndex
	 * @return
	 */
	public List<Staff> findByDepartment(@Param("id") Integer id,@Param("endIndex") Integer endIndex,@Param("startIndex") Integer startIndex);
	
	/**
	 * 根据部门编号查询该部门的所有员工的人数
	 * @param id
	 * @return
	 */
	public Integer findByDepartmentNum(Integer id);
	
	/**
	 * 根据账号查询
	 * @param staff_userName
	 * @return
	 */
	public Staff findByUserName(String staff_userName);
	
	/**
	 * 根据ID查询所有下属员工
	 * @param staffId
	 * @return
	 */
	public List<Staff> findBySuperior(Integer staffId);
	
	/**
	 * 根据部门编号查询下级部门的员工
	 * @param id
	 * @param endIndex
	 * @param startIndex
	 * @return
	 */
	public List<Staff> findByDepartmentId(Integer departmentId);
	
	/**
	 * 根据ID查询员工名字
	 * @param staff_id
	 * @return
	 */
	public List<String> findByName(String staff_id);
	
	/**
	 * 批量删除
	 * @param id
	 * @return
	 */
	public Integer deletes(String[] id);
	
	/**
	 * 根据部门ID查询员工
	 * @param id
	 * @return
	 */
	public List<Staff> findByDepId(Integer id);
	
	/**
	 * 多条件查询方法：姓名，电话，邮箱
	 * @param selectWhere
	 * @return
	 */
	public List<Staff> findSelectWhere(Staff staff);
	
	public List<Staff> findByOneName(@Param("name")String name);
	
	public List<Staff> findAllPage(Integer beginIndex,  Integer endIndex);
	
	public int findAllCount();
	
	public int findAllCountCondition(String condition);
	
	public List<Staff> findAllPageCondition(Integer beginIndex,String condition,  Integer endIndex);
}
